package com.icangya.DAO;


import com.icangya.domain.User;

import java.sql.Timestamp;
import java.util.List;

public interface IUserFootDAO extends IBaseDAO<User> {

    /**
     * 根据用户微信id 得到用户
     *
     * @param openId
     * @return
     */
     User selectUserByOpenId(String openId);

    /**
     * 查询用户头像和昵称
     * @param openId
     * @return
     */
    Object[] getNickName(String openId);

    /**
     * 获得代理编号的用户id
     * @param proxyId
     * @return
     */
    List<Object[]> getProxyUserId(long proxyId);

    /**
     * 获取登录游戏用户的详情
     * @param uid
     * @return
     */
     User selectUserByUid(Long uid);

    /**
     * 根据手机号码获取用户记录
     * @param mobilePhone
     * @return
     */
    User selectUserByMobilePhone(String mobilePhone);

    /**
     * 根据字符串获取用户记录
     * @param lineStr
     * @return
     */
    User selectUserByLineStr(String lineStr);


    /**
     * 获取所有的用户信息
     * @return
     */
    List  findAllUser();

     //User getUserByProxyId(long uid,long proxyId);


//    /**
//     * 获取用户的详情
//     * @param openId
//     * @return
//     */
//    User selectUserByOpenId(String openId);

    /**
     *获取用户的下级用户信息
     * @param uid
     * @return
     */
     List getUserFirstLevel(Long uid);

    /**
     * 查询有几个下级
     * @param uid 上级的id
     * @return
     */
     Long getUserCount(Long uid);


    /**
     * 获得所有的用户信息
     * @return
     */
     List getAllUser();

    /**
     * 获得所有的用户信息  根据页码查询
     * @return
     */
    List getAdminAllUser(int startPage,long proxyId);

    /**
     *  根据用户id,查询用户信息
     * @param uid
     *  @param proxyId
     * @return
     */
    User checkUserById(long uid,long proxyId);

    /**
     * 修改用户代理id
     * @param id
     * @return
     */
    boolean updateProxyId(long id,Long proxyId);

    /**
     * 查询这个代理下面所有用户当天的充值记录
     * @param proxyId
     * @return
     */
    Double  getAgentRechargeMoney(long proxyId,  Timestamp startTime,Timestamp endTime);

    /**
     * 代理团队用户所有的支出金额
     * @param proxyId
     * @return
     */
    Double getAgentCommMoney(long proxyId , Timestamp startTime,Timestamp endTime);

    /**
     * 代理团队当天的佣金提现记录
     * @param proxyId
     * @return
     */
    Double getAgentCashComm(long proxyId,  Timestamp startTime,Timestamp endTime);

    /**
     * 修改用户的代理id
     * @param proxyId
     * @param uid
     * @return
     */
    int updateUserProxyId(long proxyId,long uid);

    /**
     * 根据推荐码，查询用户
     * @param referralCode
     * @return
     */
    User getUserByReferralCode(String referralCode);

    /**
     * 查询所有用户并且分页
     * @param pageNumber
     * @return
     */
    List<Object> findALlUser(Integer pageNumber);
}























